package com.weipt.simple;

/**
 * @author peter.wei 2020/10/09 09:49
 * @version 1.0
 * @company 终生学习
 * @description <br>peter.wei 2020/10/09 09:49
 * 因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象
 * 该模式用于封装和管理对象的创建，是一种创建型模式
 **/
public class PhoneFactory {
    public Phone makePhone(String phoneType){    //利用phoneType用于创建不通的对象。
        if("xiaomi".equals(phoneType)){
            return new MiPhone();
        }else if("huawei".equals(phoneType)){
            return new HuaweiPhone();
        }else{
            return null;
        }
    }


    public static void main(String[] args) {
        PhoneFactory phoneFactory = new PhoneFactory();
        phoneFactory.makePhone("xiaomi");
        phoneFactory.makePhone("huawei");
        phoneFactory.makePhone("sanxing");
    }
}


interface Phone {
    void make();
}

class MiPhone implements Phone{
    public MiPhone(){
        this.make();
    }

    public void make(){
        System.out.println("make xiaomi phone");
    }
}

class HuaweiPhone implements Phone{
    public HuaweiPhone(){
        this.make();
    }

    public void make(){
        System.out.println("make huawei phone");
    }
}